# -*- encoding: utf-8 -*-

"""
------------------------------------------
@File       : 14_is_power_of_2.py
@Author     : maixiaochai
@Email      : maixiaochai@outlook.com
@CreatedOn  : 2022/1/27 15:09
------------------------------------------
    判断一个数是不是 2的整数次幂
    这种第一次见，属于基础知识类，记住原理，以后灵活运用

    原理：
        对一个整数 n，只需要计算 n & (n - 1) 的结果是不是 0,
        如果 n是 2的整数次幂，n - 1转换成二进制后，所有位都是 1，而 n 转换成二进制后，只有最高位是 1，
        二者按位与，结果是零
"""


def is_power_of_2(num):
    return num & (num - 1) == 0


def demo():
    n = 2
    print(is_power_of_2(n))


if __name__ == '__main__':
    demo()
